# Redis operator for Kubernetes

Redis operator runs Sentinel and Redis, makes Redis high available with HAProxy. **Working with Redis 5**.

## Build sources

- You definitly need a Golang installed
- Clone repository https://git.blindage.org/21h/redis-operator to your computer
- Code
- Create pull-request

## Prebuilt images

You can find images here https://hub.docker.com/r/iam21h/redis-operator

## Deploy operator

### Helm

```
helm repo add 21h https://charts.blindage.org
helm repo update
helm install redis-operator 21h/redis-operator -n operators
```

### Namespace-scoped installation

```
kubectl -n operators -f deploy/service_account.yaml
kubectl -n operators -f deploy/role.yaml
kubectl -n operators -f deploy/role_binding.yaml
kubectl -n operators -f deploy/operator.yaml
```

Edit `operator.yaml` to set `WATCH_NAMESPACE`, may be you want set it to namespace of pod:

```
env:
  - name: WATCH_NAMESPACE
    valueFrom:
      fieldRef:
        fieldPath: metadata.namespace
```

### Cluster-scoped installation

```
kubectl -f deploy/clusterrole.yaml
kubectl -f deploy/clusterrole_binding.yaml
kubectl -n operators -f deploy/service_account.yaml
kubectl -n operators -f deploy/operator.yaml
```

Edit `clusterrole_binding.yaml`, set namespace for service account.

## Your first Redis deployment

This resource can help you run your first Redis instance

```
apiVersion: blindage.org/v1alpha1
kind: Redis
metadata:
  name: my-redis
spec:
  useHAProxy: true
  haproxyReplicas: 1
  sentinelReplicas: 3
  redisReplicas: 3
  quorum: 2
  haproxyTimeoutServer: 30
  haproxyTimeoutClient: 30
  haproxyBackendCheckInterval: 1
  # set size if you want make persistent volume
  persistentVolumeSize: 1Gi
  persistentVolumeClass: "gluster"
  persistentVolumePurge: true
  pdbRedis:
    maxUnavailable: 1
  pdbSentinel:
    minAvailable: 2
```

Remember rule: `pdbSentinel.minAvailable > (sentinelReplicas / 2) > pdbSentinel.maxUnavailable`. This made to save quorum.

Open file `pkg/apis/blindage/v1alpha1/redis_types.go` to know more about options.

---
Copyright by Vladimir Smagin (21h) 2019  
http://blindage.org email: 21h@blindage.org  
Project page: https://git.blindage.org/21h/redis-operator
